/***************************************************************************
 *   Copyright (C) 2006 by ludo   *
 *   ludo42fr@free.fr   *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 *                                                                         *
 *   In addition, as a special exception, the copyright holders give       *
 *   permission to link the code of this program with any edition of       *
 *   the Qt library by Trolltech AS, Norway (or with modified versions     *
 *   of Qt that use the same license as Qt), and distribute linked         *
 *   combinations including the two.  You must obey the GNU General        *
 *   Public License in all respects for all of the code used other than    *
 *   Qt.  If you modify this file, you may extend this exception to        *
 *   your version of the file, but you are not obligated to do so.  If     *
 *   you do not wish to do so, delete this exception statement from        *
 *   your version.                                                         *
 ***************************************************************************/
#include "PropertyTreeBrowser.h"
#include <QDebug>
#include <QPainter>
#include <QPaintEvent>
#include <QStyleOptionButton>
PropertyTreeBrowser::PropertyTreeBrowser(QWidget*w)
:QTreeView(w)
{
}




void PropertyTreeBrowser::drawBranches ( QPainter * painter, const QRect & rect, const QModelIndex & index ) const
{
if(!index.isValid())
        return;
static const int i = 9;
QRect gutterRect(rect.left(), rect.top() ,i*2,rect.height());
painter->save();
painter->setPen(Qt::NoPen);
painter->setBrush(palette().brush( QPalette::Button));
painter->drawRect( gutterRect);
painter->restore();
if(index.model()->hasChildren(index)==false)
 return;
QStyleOption branchOption;

        branchOption.rect = QRect(rect.left() + i/2, rect.top() + (rect.height() - i)/2, i, i);
        //branchOption.palette = option.palette;
        branchOption.state = QStyle::State_Children;
        if (isExpanded(index))
            branchOption.state |= QStyle::State_Open;
       style()->drawPrimitive(QStyle::PE_IndicatorBranch, &branchOption, painter,this);
}


void  PropertyTreeBrowser::drawRow ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const
{
static const int i = 9;
QTreeView::drawRow(painter,option,index);
/*QRect rect=option.rect;
QRect gutterRect(i*2, rect.top() ,width(),rect.height());
if(index.model()->hasChildren(index)==false&&index.sibling(index.row()+1,index.column()).isValid())
return;
painter->drawRect( gutterRect);*/

}